﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using Microsoft.SharePoint;
using System.Linq.Expressions;

namespace Tool.Core
{
    public class Common
    {
        public static string URL
        {
            //get
            //{
            //    return "http://ws-hwenlong-02:19766/sites/second/";
            //}
            set;
            get;
        }

        public static Connect LoginPage
        {
            set;
            get;
        }

        public static string OutPutURL = GetValueFromXml("OutPutURL");

        public static string NameSpace = GetValueFromXml("NameSpace");

        public static string GetValueFromXml(string key)
        {
            string path = Environment.CurrentDirectory.ToString() + @"\settingconfig.xml";

            XElement element = XElement.Load(path, LoadOptions.None);

            var items = element.Elements().Where(o=>o.Element("key").Value ==key).FirstOrDefault();
            return items.Element("value").Value;

        }

        public class EntityName
        {
            public const string ListNameConst = "ListNameConsts.cs";
        }

        public static SPWeb GetAdminWeb(string siteURL)
        {
            SPWeb adminWeb = null;
            SPSecurity.RunWithElevatedPrivileges(delegate
            {

                using (SPSite site = new SPSite(siteURL))
                {
                    using (adminWeb = site.OpenWeb())
                    {

                    }
                }
            });
            return adminWeb;
        }

        public static SPWeb GetAdminWeb(SPWeb web)
        {
            SPWeb adminWeb = null;
            SPSecurity.RunWithElevatedPrivileges(delegate
            {

                using (SPSite site = new SPSite(web.Site.ID))
                {
                    using (adminWeb = site.OpenWeb())
                    {

                    }
                }
            });
            return adminWeb;
        }

        public static SPWeb GetAdminWeb()
        {
            SPWeb adminWeb = null;
            SPSecurity.RunWithElevatedPrivileges(delegate
            {

                using (SPSite site = new SPSite(URL))
                {
                    using (adminWeb = site.OpenWeb())
                    {

                    }
                }
            });
            return adminWeb;
        }

        public static bool IsUnUserfullProperties(string title)
        {
            HashSet<string> h = new HashSet<string>();
            h.Add("ContentTypeId");
            h.Add("_ModerationComments");
            h.Add("File_x0020_Type");
            h.Add("ContentType");
            h.Add("Modified");
            h.Add("Created");
            h.Add("Author");
            h.Add("Editor");
            h.Add("_HasCopyDestinations");
            h.Add("_CopySource");
            h.Add("owshiddenversion");
            h.Add("WorkflowVersion");
            h.Add("_UIVersion");
            h.Add("_UIVersionString");
            h.Add("Attachments");
            h.Add("_ModerationStatus");
            h.Add("Edit");
            h.Add("LinkTitleNoMenu");
            h.Add("LinkTitle");
            h.Add("SelectTitle");
            h.Add("InstanceID");
            h.Add("Order");
            h.Add("GUID");
            h.Add("WorkflowInstanceID");
            h.Add("FileRef");
            h.Add("FileDirRef");
            h.Add("Last_x0020_Modified");
            h.Add("Created_x0020_Date");
            h.Add("FSObjType");
            h.Add("PermMask");
            h.Add("FileLeafRef");
            h.Add("UniqueId");
            h.Add("ProgId");
            h.Add("ScopeId");
            h.Add("HTML_x0020_File_x0020_Type");
            h.Add("_EditMenuTableStart");
            h.Add("_EditMenuTableEnd");
            h.Add("LinkFilenameNoMenu");
            h.Add("LinkFilename");
            h.Add("DocIcon");
            h.Add("ServerUrl");
            h.Add("EncodedAbsUrl");
            h.Add("BaseName");
            h.Add("MetaInfo");
            h.Add("_Level");
            h.Add("_IsCurrentVersion");
            h.Add("ItemChildCount");
            h.Add("FolderChildCount");
            h.Add("EditMenuTableStart");
            h.Add("LinkTitle2");
            h.Add("SyncClientId");
            h.Add("_EditMenuTableStart2");
            h.Add("LinkFilename2");
            h.Add("SortBehavior");
            h.Add("AppAuthor");
            h.Add("AppEditor");
            return h.Contains(title);
        }
    }




}
